/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package negocio;

import Utilidades.VariaveisEstaticas;
import dao.ManterFornecedorDAO;
import dao.exceptions.PreexistingEntityException;
import dominio.Fornecedor;
import java.util.List;
import javax.persistence.PersistenceException;
import javax.persistence.RollbackException;

/**
 *
 * @author Cícero
 */
public class ManterFornecedorNegocio {
    private ManterFornecedorDAO manterFornecedorDAO;

    public ManterFornecedorNegocio() {
        manterFornecedorDAO = new ManterFornecedorDAO();
    }

    /**
     * Método que irá chamar o create() do DAO, armazenando o fornecedor no BD.
     *@param fornecedor Fornecedor
     * @return SUCESSO(1) caso o fornecedor seja inserido com êxito; ERRO_DUPLICAÇÃO(2) caso ocorra
     * o fornecedor já exista; ERRO_BD(3) erro de persistência.
     */
    public int create(Fornecedor fornecedor) {
        try {
            manterFornecedorDAO.create(fornecedor);
            return VariaveisEstaticas.SUCESSO;
        } catch (RollbackException r) {
            return VariaveisEstaticas.ERRO_DUPLICACAO;
        } catch (Exception e) {
            return VariaveisEstaticas.ERRO_BD;
        }
    }
    /**
     * Método que irá chamar o edit() do DAO, editando o fornecedor no BD.
     *@param fornecedor Fornecedor
     * @return SUCESSO(1) int caso o fornecedor seja inserido com êxito; ERRO_DUPLICAÇÃO(2) int caso ocorra
     * o fornecedor já exista; ERRO_BD(3) int erro de persistência.
     */
    public int edit(Fornecedor fornecedor) {
        try {
            manterFornecedorDAO.edit(fornecedor);
            return VariaveisEstaticas.SUCESSO;
        } catch (RollbackException r) {
            return VariaveisEstaticas.ERRO_DUPLICACAO;
        } catch (Exception e) {
            e.printStackTrace();
            return VariaveisEstaticas.ERRO_BD;            
        }
    }

    /**
     * Método que irá chamar o destroy() do DAO, deletando o fornecedor no BD.
     *@param fornecedor Fornecedor
     * @return SUCESSO(1) int caso o fornecedor seja inserido com êxito; ERRO_BD(3) int erro de persistência.
     */
    public int destroy(Fornecedor fornecedor) {
        try {
            manterFornecedorDAO.destroy(fornecedor.getCodigo());
            return VariaveisEstaticas.SUCESSO;
        } catch (Exception e) {
            return VariaveisEstaticas.ERRO_BD;
        }
    }
    /**
     * Método responsável por chamar o método findFornecedorEntities() do DAO. Retorna uma lista de fornecedores.
     * @return List<Fornecedor>
     */
    public List<Fornecedor> findFornecedorEntities() {
        return manterFornecedorDAO.findFornecedorEntities();
    }

    /**
     * Método responsável por chamar o método findFornecedor() do DAO. Retorna o fornecedor pesquisado.
     * @return Fornecedor
     */
    public Fornecedor findFornecedor(Fornecedor f) {
        return manterFornecedorDAO.findFornecedor(f.getCodigo());
    }

}
